home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / postgres / postgre3.z / postgre3 / src / lib / H / access / imark.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-27  |  4.7 KB  |  179 lines

  1. /*
  2.  * imark.h --
  3.  *    POSTGRES buffer manager item marking definitions.
  4.  *
  5.  * Explaination:
  6.  *    There are three types of disk items which need to be
  7.  *    manipulated.  The first type is disk item pointers.
  8.  *    The second type is pointers to items on a disk block
  9.  *    (buffer frame).  The third is pointers to copies of
  10.  *    disk resident data (before or after transformations).
  11.  *
  12.  *    The first type of disk item is represented by the
  13.  *    disk item pointer and an "unknown" buffer.
  14.  *
  15.  *    The second type of disk item is represented by the
  16.  *    pointer and its associated pinned buffer.
  17.  *
  18.  *    The third type of disk item is represented by the
  19.  *    pointer    and an "invalid" buffer.  This type of item
  20.  *    is especially easy to manage because such an item
  21.  *    remains valid even after a relation restructuring.
  22.  *
  23.  * XXX
  24.  *    None of this is implemented, so I replaced the dummy functions
  25.  *    with macros.  -cim 4/27/91
  26.  *
  27.  * Identification:
  28.  *    $Header: /private/postgres/src/lib/H/access/RCS/imark.h,v 1.6 1991/04/28 09:15:47 cimarron Exp $
  29.  */
  30.  
  31. #ifndef    IMarkIncluded    /* Include this file only once. */
  32. #define IMarkIncluded    1
  33.  
  34. #include "tmp/c.h"
  35. #include "storage/buf.h"
  36. #include "storage/itemptr.h"
  37.  
  38. typedef Pointer    ItemMark;
  39.  
  40. #define InvalidItemMark    NULL
  41.  
  42. /*
  43.  * ItemMarkIsValid --
  44.  *    True iff the item mark is valid.
  45.  */
  46. #define ItemMarkIsValid(mark) PointerIsValid(mark)
  47.  
  48. /*
  49.  * ItemMarkIsForItemPointer --
  50.  *    True iff the item mark is associated with a disk item pointer.
  51.  *
  52.  * Note:
  53.  *    Does nothing at present. XXX
  54.  */
  55. #define ItemMarkIsForItemPointer(mark) \
  56.     ((bool) AssertMacro(ItemMarkIsValid(mark)))
  57.  
  58. /*
  59.  * ItemMarkIsForBufferPointer --
  60.  *    True iff the item mark is associated with a buffer memory pointer.
  61.  *
  62.  * Note:
  63.  *    Does nothing at present. XXX
  64.  */
  65. #define ItemMarkIsForBufferPointer(mark) \
  66.     ((bool) AssertMacro(ItemMarkIsValid(mark)))
  67.  
  68. /*
  69.  * ItemMarkIsForCopiedPointer --
  70.  *    True iff the item mark is associated with a non-buffer memory pointer.
  71.  *
  72.  * Note:
  73.  *    Does nothing at present. XXX
  74.  */
  75. #define ItemMarkIsForCopiedPointer(mark) \
  76.     ((bool) AssertMacro(ItemMarkIsValid(mark)))
  77.  
  78. /*
  79.  * ItemMarkGetItemPointer --
  80.  *    Returns the item pointer associated with a disk item pointer item mark.
  81.  *
  82.  * Note:
  83.  *    Assumes the item mark is for a disk item pointer.
  84.  *    Presently just returns it's argument.  XXX
  85.  */
  86. #define ItemMarkGetItemPointer(mark) \
  87.     ((ItemPointer) \
  88.      AssertMacro(ItemMarkIsValid(mark)) ? \
  89.      (ItemPointer) mark : (ItemPointer) NULL)
  90.  
  91. /*
  92.  * ItemMarkGetBuffer --
  93.  *    Returns the buffer associated with a buffer memory pointer item mark.
  94.  *
  95.  * Note:
  96.  *    Assumes the item mark is for a buffer memory pointer.
  97.  *    Does nothing at present.  XXX
  98.  */
  99. #define ItemMarkGetBuffer(mark) \
  100.     ((Buffer) \
  101.      AssertMacro(ItemMarkIsValid(mark)) ? (Buffer) 1 : (Buffer) 0)
  102.  
  103. /*
  104.  * ItemMarkGetBufferPointer --
  105.  *    Returns the pointer associated with a buffer memory pointer item mark.
  106.  *
  107.  * Note:
  108.  *    Assumes the item mark is for a buffer memory pointer.
  109.  *    Does nothing at present.  XXX
  110.  */
  111. #define ItemMarkGetBufferPointer(mark) \
  112.     ((ItemPointer) \
  113.      AssertMacro(ItemMarkIsValid(mark)) ? \
  114.      (ItemPointer) mark : (ItemPointer) NULL)
  115.  
  116. /*
  117.  * ItemMarkGetCopiedPointer --
  118.  *    Returns the pointer associated with a non-buffer pointer item mark.
  119.  *
  120.  * Note:
  121.  *    Assumes the item mark is for a non-buffer memory pointer.
  122.  *    Does nothing at present.  XXX
  123.  */
  124. #define ItemMarkGetCopiedPointer(mark) \
  125.     ((ItemPointer) \
  126.      AssertMacro(ItemMarkIsValid(mark)) ? \
  127.      (ItemPointer) mark : (ItemPointer) NULL)
  128.  
  129. /*
  130.  * ItemMarkFree --
  131.  *    Frees a item mark.
  132.  *    Does nothing at present.  XXX
  133.  */
  134. #define ItemMarkFree(mark) \
  135.     Assert(ItemMarkIsValid(mark))
  136.  
  137. /*
  138.  * ItemPointerGetItemMark --
  139.  *    Returns the item mark associated with a disk item pointer.
  140.  *
  141.  * Note:
  142.  *    Assumes the disk item pointer is valid.
  143.  *    Does nothing at present.  XXX
  144.  */
  145. #define ItemPointerGetItemMark(pointer) \
  146.     ((ItemMark) \
  147.      AssertMacro(ItemPointerIsValid(pointer)) ? \
  148.      (ItemMark) pointer : (ItemMark) NULL)
  149.  
  150. /*
  151.  * BufferGetItemMark --
  152.  *    Returns the item mark associated with a buffer memory pointer.
  153.  *
  154.  * Note:
  155.  *    Assumes the buffer is valid.
  156.  *    Assumes the pointer is valid.
  157.  *    Does nothing at present.  XXX
  158.  */
  159. #define BufferGetItemMark(buffer, pointer) \
  160.     ((ItemMark) \
  161.      (AssertMacro(BufferIsValid(buffer) && \
  162.           PointerIsValid(pointer)) ? \
  163.       (ItemMark) pointer : (ItemMark) NULL))
  164.  
  165. /*
  166.  * PointerGetItemMark --
  167.  *    Returns the item mark associated with a non-buffer memory pointer.
  168.  *
  169.  * Note:
  170.  *    Assumes the pointer is valid.
  171.  *    Does nothing at present.  XXX
  172.  */
  173. #define PointerGetItemMark(pointer) \
  174.     ((ItemMark) \
  175.      (AssertMacro(PointerIsValid(pointer)) ? \
  176.       (ItemMark) pointer : (ItemMark) NULL))
  177.  
  178. #endif    /* !defined(IMarkIncluded) */
  179.